package com.smartbus.bus.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.smartbus.common.annotation.Excel;
import com.smartbus.common.core.domain.BaseEntity;

/**
 * 语音文件管理，存储TTS合成的各站点、各语言、各类型的报站语音文件对象 voice_files
 * 
 * @author ruoyi
 * @date 2025-09-24
 */
public class VoiceFiles extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID，自增 */
    private Long id;

    /** 站点ID，关联bus_stations表 */
    @Excel(name = "站点ID，关联bus_stations表")
    private Long stationId;

    /** 语言ID，关联language_types表 */
    @Excel(name = "语言ID，关联language_types表")
    private Long languageId;

    /** 报站类型ID，关联announcement_types表 */
    @Excel(name = "报站类型ID，关联announcement_types表")
    private Long announcementTypeId;

    /** 语音文件名 */
    @Excel(name = "语音文件名")
    private String fileName;

    /** 语音文件存储路径 */
    @Excel(name = "语音文件存储路径")
    private String filePath;

    /** 文件大小(字节) */
    @Excel(name = "文件大小(字节)")
    private Long fileSize;

    /** 语音时长(秒) */
    @Excel(name = "语音时长(秒)")
    private BigDecimal duration;

    /** 语音播放速度：慢速/正常/快速 */
    @Excel(name = "语音播放速度：慢速/正常/快速")
    private String voiceSpeed;

    /** 语音语调：温和/标准/正式 */
    @Excel(name = "语音语调：温和/标准/正式")
    private String voiceTone;

    /** TTS模型版本号 */
    @Excel(name = "TTS模型版本号")
    private String ttsModelVersion;

    /** 文件MD5校验和，用于验证文件完整性 */
    @Excel(name = "文件MD5校验和，用于验证文件完整性")
    private String checksum;

    /** 文件状态，1-可用 0-停用 */
    @Excel(name = "文件状态，1-可用 0-停用")
    private Integer isActive;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 站点名称（关联查询字段，不存储到数据库） */
    private String stationName;

    /** 语音类型（关联查询字段，不存储到数据库） */
    private String announcementType;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setStationId(Long stationId) 
    {
        this.stationId = stationId;
    }

    public Long getStationId() 
    {
        return stationId;
    }

    public void setLanguageId(Long languageId) 
    {
        this.languageId = languageId;
    }

    public Long getLanguageId() 
    {
        return languageId;
    }

    public void setAnnouncementTypeId(Long announcementTypeId) 
    {
        this.announcementTypeId = announcementTypeId;
    }

    public Long getAnnouncementTypeId() 
    {
        return announcementTypeId;
    }

    public void setFileName(String fileName) 
    {
        this.fileName = fileName;
    }

    public String getFileName() 
    {
        return fileName;
    }

    public void setFilePath(String filePath) 
    {
        this.filePath = filePath;
    }

    public String getFilePath() 
    {
        return filePath;
    }

    public void setFileSize(Long fileSize) 
    {
        this.fileSize = fileSize;
    }

    public Long getFileSize() 
    {
        return fileSize;
    }

    public void setDuration(BigDecimal duration) 
    {
        this.duration = duration;
    }

    public BigDecimal getDuration() 
    {
        return duration;
    }

    public void setVoiceSpeed(String voiceSpeed) 
    {
        this.voiceSpeed = voiceSpeed;
    }

    public String getVoiceSpeed() 
    {
        return voiceSpeed;
    }

    public void setVoiceTone(String voiceTone) 
    {
        this.voiceTone = voiceTone;
    }

    public String getVoiceTone() 
    {
        return voiceTone;
    }

    public void setTtsModelVersion(String ttsModelVersion) 
    {
        this.ttsModelVersion = ttsModelVersion;
    }

    public String getTtsModelVersion() 
    {
        return ttsModelVersion;
    }

    public void setChecksum(String checksum) 
    {
        this.checksum = checksum;
    }

    public String getChecksum() 
    {
        return checksum;
    }

    public void setIsActive(Integer isActive) 
    {
        this.isActive = isActive;
    }

    public Integer getIsActive() 
    {
        return isActive;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }

    public void setStationName(String stationName)
    {
        this.stationName = stationName;
    }

    public String getStationName()
    {
        return stationName;
    }

    public void setAnnouncementType(String announcementType)
    {
        this.announcementType = announcementType;
    }

    public String getAnnouncementType()
    {
        return announcementType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("stationId", getStationId())
            .append("languageId", getLanguageId())
            .append("announcementTypeId", getAnnouncementTypeId())
            .append("fileName", getFileName())
            .append("filePath", getFilePath())
            .append("fileSize", getFileSize())
            .append("duration", getDuration())
            .append("voiceSpeed", getVoiceSpeed())
            .append("voiceTone", getVoiceTone())
            .append("ttsModelVersion", getTtsModelVersion())
            .append("checksum", getChecksum())
            .append("isActive", getIsActive())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
